package com.me.study.designPatterns.Strategy;

/**
 * 上下文对象：封装算法，避免高层模块对策略(算法)直接依赖
 * TODO 和代理模式的最大区别就是此类：封装类没有实现策略接口，只是持有策略引用
 *
 * @author ME
 * @date   2019/4/20
 */
public class Context {

    // 持有具体策略的引用
    private Strategy strategy;

    // 通过构造函数获得具体策略
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    // 封装后的策略方法，可以执行任何策略
    public void doAnything() {
        this.strategy.doSomething();
    }
}
